class Solution {
public:
    int myAtoi(string str) {
        int i = 0;
        while (i < str.size() && str[i] == ' ')
        {
            i++;
        }
        int flag = 1;
        int count = 0;
        if (i < str.size() && str[i] == '-')
        {
            flag = -1;
            i++;
            count++;
        }
        if (i < str.size() && str[i] == '+')
        {
            i++;
            count++;
        }
        if (count == 2)
            return 0;
        string s;
        while (i < str.size() && str[i] >= '0' && str[i] <= '9')
        {
            s += str[i];
            i++;
        }
        long ret = 0;
        for (i = 0; i < s.size(); i++)
        {
            ret = (s[i] - '0') + ret * 10;
            if (ret > INT_MAX && flag == 1)
                return INT_MAX;
            if (ret > INT_MAX && flag == -1)
                return INT_MIN;
        }
        return flag * ret;
    }
};